package com.ywd.materials.admin.utils;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

public class TreeListUtil {
  /**
   * 构建树形菜单
   *
   * @param menuList
   * @return
   */
  public static List<MenuVo> buildMenuTreeList(List<MenuVo> menuList) {
    List<MenuVo> menuTreeList = new ArrayList<>();
    menuList.forEach(menu -> {
      // ParentId为0说明是一级节点
      if (Objects.equals(menu.getParentId(), 0)) {
        menuTreeList.add(findChildren(menu, menuList));
      }
    });
    return menuTreeList;
  }

  /**
   * 递归查找子节点
   * @param parentNode 父节点
   * @param menuList   菜单集合
   */
  private static MenuVo findChildren(MenuVo parentNode, List<MenuVo> menuList) {
    // 遍历菜单集合查找子节点
    menuList.forEach(node -> {
      if (Objects.equals(parentNode.getId(), node.getParentId())) {
        // 查找该节点的子节点
        parentNode.getChildrenMenu().add(findChildren(node, menuList));
      }
    });
    return parentNode;
  }


}
